package com.goldmantis.alitrip.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.goldmantis.alitrip.common.annotation.*;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;


/**
 * @author shmily
 */
@Table(name = "sys_res")
@ApiModel("sys_res")
public class SysRes {
    /**
     * 资源主键
     */
    @Id
    @Column(name = "RESID")
    @Display("资源主键")
    @ApiModelProperty(value = "资源主键")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long resid;

    /**
     * 资源名称
     */
    @Column(name = "RESNAME")
    @Display("资源名称")
    @ApiModelProperty("资源名称")
    @NotNull
    @Size(min = 0, max = 128 , message = "长度必须在{min}和{max}之间")
    private String resname;

    /**
     * 别名（系统中唯一)
     */
    @Column(name = "ALIAS")
    @Display("别名（系统中唯一)")
    @ApiModelProperty("别名（系统中唯一)")
    @Size(min = 0, max = 128 , message = "长度必须在{min}和{max}之间")
    private String alias;

    /**
     * 同级排序
     */
    @Column(name = "SN")
    @Display("同级排序")
    @ApiModelProperty("同级排序")
    private Long sn;

    /**
     * 图标
     */
    @Column(name = "ICON")
    @Display("图标")
    @ApiModelProperty("图标")
    @Size(min = 0, max = 100 , message = "长度必须在{min}和{max}之间")
    private String icon;

    /**
     * 父ID
     */
    @Column(name = "PARENTID")
    @Display("父ID")
    @ApiModelProperty("父ID")
    private Long parentid;

    /**
     * 默认地址
     */
    @Column(name = "DEFAULTURL")
    @Display("默认地址")
    @ApiModelProperty("默认地址")
    @Size(min = 0, max = 256 , message = "长度必须在{min}和{max}之间")
    private String defaulturl;

    /**
     * 栏目
     */
    @Column(name = "ISFOLDER")
    @Display("栏目")
    @ApiModelProperty("栏目")
    private Short isfolder;

    /**
     * 显示到菜单
     */
    @Column(name = "ISDISPLAYINMENU")
    @Display("显示到菜单")
    @ApiModelProperty("显示到菜单")
    private Short isdisplayinmenu;

    /**
     * 默认打开(分支)
     */
    @Column(name = "ISOPEN")
    @Display("默认打开(分支)")
    @ApiModelProperty("默认打开(分支)")
    private Short isopen;

    /**
     * 子系统ID
     */
    @Column(name = "SYSTEMID")
    @Display("子系统ID")
    @ApiModelProperty("子系统ID")
    private Long systemid;

    /**
     * 是否打开新窗口：0否,1是
     */
    @Column(name = "ISNEWOPEN")
    @Display("是否打开新窗口：0否,1是")
    @ApiModelProperty("是否打开新窗口：0否,1是")
    private Short isnewopen;

    /**
     * 资源路径
     */
    @Column(name = "PATH")
    @Display("资源路径")
    @ApiModelProperty("资源路径")
    @Size(min = 0, max = 500 , message = "长度必须在{min}和{max}之间")
    private String path;

    /**
     * 是否默认常用1是0否
     */
    @Column(name = "is_common")
    @Display("是否默认常用1是0否")
    @ApiModelProperty("是否默认常用1是0否")
    private Short isCommon;

    /**
     * 是否仅为超链接1是0否
     */
    @Column(name = "is_only_hyperlink")
    @Display("是否仅为超链接1是0否")
    @ApiModelProperty("是否仅为超链接1是0否")
    private Short isOnlyHyperlink;

    @Column(name = "is_button")
    private Short isButton;

    @Column(name = "button_type")
    private Short buttonType;

    @Column(name = "icon_class")
    @Size(min = 0, max = 256 , message = "长度必须在{min}和{max}之间")
    private String iconClass;

    /**
     * 获取资源主键
     *
     * @return RESID - 资源主键
     */
    public Long getResid() {
        return resid;
    }

    /**
     * 设置资源主键
     *
     * @param resid 资源主键
     */
    public void setResid(Long resid) {
        this.resid = resid;
    }

    /**
     * 获取资源名称
     *
     * @return RESNAME - 资源名称
     */
    public String getResname() {
        return resname;
    }

    /**
     * 设置资源名称
     *
     * @param resname 资源名称
     */
    public void setResname(String resname) {
        this.resname = resname == null ? null : resname.trim();
    }

    /**
     * 获取别名（系统中唯一)
     *
     * @return ALIAS - 别名（系统中唯一)
     */
    public String getAlias() {
        return alias;
    }

    /**
     * 设置别名（系统中唯一)
     *
     * @param alias 别名（系统中唯一)
     */
    public void setAlias(String alias) {
        this.alias = alias == null ? null : alias.trim();
    }

    /**
     * 获取同级排序
     *
     * @return SN - 同级排序
     */
    public Long getSn() {
        return sn;
    }

    /**
     * 设置同级排序
     *
     * @param sn 同级排序
     */
    public void setSn(Long sn) {
        this.sn = sn;
    }

    /**
     * 获取图标
     *
     * @return ICON - 图标
     */
    public String getIcon() {
        return icon;
    }

    /**
     * 设置图标
     *
     * @param icon 图标
     */
    public void setIcon(String icon) {
        this.icon = icon == null ? null : icon.trim();
    }

    /**
     * 获取父ID
     *
     * @return PARENTID - 父ID
     */
    public Long getParentid() {
        return parentid;
    }

    /**
     * 设置父ID
     *
     * @param parentid 父ID
     */
    public void setParentid(Long parentid) {
        this.parentid = parentid;
    }

    /**
     * 获取默认地址
     *
     * @return DEFAULTURL - 默认地址
     */
    public String getDefaulturl() {
        return defaulturl;
    }

    /**
     * 设置默认地址
     *
     * @param defaulturl 默认地址
     */
    public void setDefaulturl(String defaulturl) {
        this.defaulturl = defaulturl == null ? null : defaulturl.trim();
    }

    /**
     * 获取栏目
     *
     * @return ISFOLDER - 栏目
     */
    public Short getIsfolder() {
        return isfolder;
    }

    /**
     * 设置栏目
     *
     * @param isfolder 栏目
     */
    public void setIsfolder(Short isfolder) {
        this.isfolder = isfolder;
    }

    /**
     * 获取显示到菜单
     *
     * @return ISDISPLAYINMENU - 显示到菜单
     */
    public Short getIsdisplayinmenu() {
        return isdisplayinmenu;
    }

    /**
     * 设置显示到菜单
     *
     * @param isdisplayinmenu 显示到菜单
     */
    public void setIsdisplayinmenu(Short isdisplayinmenu) {
        this.isdisplayinmenu = isdisplayinmenu;
    }

    /**
     * 获取默认打开(分支)
     *
     * @return ISOPEN - 默认打开(分支)
     */
    public Short getIsopen() {
        return isopen;
    }

    /**
     * 设置默认打开(分支)
     *
     * @param isopen 默认打开(分支)
     */
    public void setIsopen(Short isopen) {
        this.isopen = isopen;
    }

    /**
     * 获取子系统ID
     *
     * @return SYSTEMID - 子系统ID
     */
    public Long getSystemid() {
        return systemid;
    }

    /**
     * 设置子系统ID
     *
     * @param systemid 子系统ID
     */
    public void setSystemid(Long systemid) {
        this.systemid = systemid;
    }

    /**
     * 获取是否打开新窗口：0否,1是
     *
     * @return ISNEWOPEN - 是否打开新窗口：0否,1是
     */
    public Short getIsnewopen() {
        return isnewopen;
    }

    /**
     * 设置是否打开新窗口：0否,1是
     *
     * @param isnewopen 是否打开新窗口：0否,1是
     */
    public void setIsnewopen(Short isnewopen) {
        this.isnewopen = isnewopen;
    }

    /**
     * 获取资源路径
     *
     * @return PATH - 资源路径
     */
    public String getPath() {
        return path;
    }

    /**
     * 设置资源路径
     *
     * @param path 资源路径
     */
    public void setPath(String path) {
        this.path = path == null ? null : path.trim();
    }

    /**
     * 获取是否默认常用1是0否
     *
     * @return is_common - 是否默认常用1是0否
     */
    public Short getIsCommon() {
        return isCommon;
    }

    /**
     * 设置是否默认常用1是0否
     *
     * @param isCommon 是否默认常用1是0否
     */
    public void setIsCommon(Short isCommon) {
        this.isCommon = isCommon;
    }

    /**
     * 获取是否仅为超链接1是0否
     *
     * @return is_only_hyperlink - 是否仅为超链接1是0否
     */
    public Short getIsOnlyHyperlink() {
        return isOnlyHyperlink;
    }

    /**
     * 设置是否仅为超链接1是0否
     *
     * @param isOnlyHyperlink 是否仅为超链接1是0否
     */
    public void setIsOnlyHyperlink(Short isOnlyHyperlink) {
        this.isOnlyHyperlink = isOnlyHyperlink;
    }

    /**
     * @return is_button
     */
    public Short getIsButton() {
        return isButton;
    }

    /**
     * @param isButton
     */
    public void setIsButton(Short isButton) {
        this.isButton = isButton;
    }

    /**
     * @return button_type
     */
    public Short getButtonType() {
        return buttonType;
    }

    /**
     * @param buttonType
     */
    public void setButtonType(Short buttonType) {
        this.buttonType = buttonType;
    }

    /**
     * @return icon_class
     */
    public String getIconClass() {
        return iconClass;
    }

    /**
     * @param iconClass
     */
    public void setIconClass(String iconClass) {
        this.iconClass = iconClass == null ? null : iconClass.trim();
    }



    @Transient
    @Display("上级菜单名称")
    private String parentResName;

    @Transient
    @Display("子系统名称")
    private String sysName;

    public String getParentResName() {
        return parentResName;
    }

    public void setParentResName(String parentResName) {
        this.parentResName = parentResName;
    }

    public String getSysName() {
        return sysName;
    }

    public void setSysName(String sysName) {
        this.sysName = sysName;
    }

    @Transient
    @Display("按钮集合")
    @ApiModelProperty("按钮集合")
    private List<Integer> buttons;

    public List<Integer> getButtons() {
        return buttons;
    }

    public void setButtons(List<Integer> buttons) {
        this.buttons = buttons;
    }


    @Transient
    @Display("菜单路径集合")
    @ApiModelProperty("菜单路径集合")
    private List<Long> pathList;

    public List<Long> getPathList() {
        return pathList;
    }

    public void setPathList(List<Long> pathList) {
        this.pathList = pathList;
    }
}